#include "../include/any.h"

namespace util {

// 析构函数：释放存储的数据
Any::~Any() 
{
    delete _content; // 多态调用Holder的析构函数，正确释放Placeholder
}

// 交换两个Any对象的数据
Any& Any::swap(Any& other) 
{
    std::swap(_content, other._content); // 仅交换指针，高效
    return *this;
}

// 赋值运算符：拷贝另一个Any对象的数据
Any& Any::operator=(const Any& other) 
{
    // 1. 创建other的拷贝（通过拷贝构造函数）
    // 2. 交换临时对象与当前对象的数据（临时对象释放旧数据）
    Any(other).swap(*this);
    return *this;
}

} // namespace util